package com.ws.config;

import java.util.Objects;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class AdminInterceptor extends HandlerInterceptorAdapter{


    /**
     * 后台拦截器。
     * 在访问后台所有功能之前，进行控制。
     *
     <mvc:interceptor>
     <!-- 配置后台拦截器，凡是路径含有admin的全部拦截。 -->
     <mvc:mapping path="/admin/**"/>
     <bean class="com.config.AdminInterceptor"/>
     </mvc:interceptor>
     */

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //1.获取此次访问的路径。
        String uri = request.getRequestURI();

        //2.访问后台静态资源、登录、登出 全部放行。
        if(uri.contains("img") || uri.contains("css")  || uri.contains("js")
                || uri.contains("login") || uri.contains("logout")) {
            return true;
        }

        //3.访问其他资源，登录后一律放行。
        Object admin = request.getSession().getAttribute("admin");
        if (Objects.nonNull(admin) && !admin.toString().trim().isEmpty()) {
            return true;
        }

        //4.否则，重定向到登录页面。其他情况一律拦截
        response.sendRedirect("login.jsp");
        return false;
    }

}